home *** CD-ROM | disk | FTP | other *** search
- { pbitmap.pas -- Print bitmaps }
-
- program PBitmap;
-
- {$R pbitmap.res}
-
- uses WinTypes, WinProcs, WObjects, UPrint, UBitmap;
-
- const
-
- fileName = 'c:\tpw\owldemos\racecar.bmp';
-
- id_Menu = 100; { Menu resource ID }
- cm_Print = 101; { Menu:Print command ID }
- cm_Quit = 102; { Menu:Exit command ID }
-
- type
-
- PBitmapApplication = object(TApplication)
- procedure InitMainWindow; virtual;
- end;
-
- PPBitmapWindow = ^PBitmapWindow;
- PBitmapWindow = object(TWindow)
- Bitmap: HBitmap; { Handle to bitmap in memory }
- Width, Height: LongInt; { Size of bitmap image }
- constructor Init(AParent: PWindowsObject; ATitle: PChar);
- destructor Done; virtual;
- procedure SetupWindow; virtual;
- procedure Paint(PaintDC: HDC;
- var PaintInfo: TPaintStruct); virtual;
- procedure CMPrint(var Msg: TMessage);
- virtual cm_First + cm_Print;
- procedure CMQuit(var Msg: TMessage);
- virtual cm_First + cm_Quit;
- end;
-
-
- { PBitmapApplication }
-
- {- Initialize PBitmapApplication object's window }
- procedure PBitmapApplication.InitMainWindow;
- begin
- MainWindow := New(PPBitmapWindow, Init(nil, 'PBitmap'))
- end;
-
-
- { PBitmapWindow }
-
- {- Construct PBitmapWindow object }
- constructor PBitmapWindow.Init(AParent: PWindowsObject; ATitle: PChar);
- begin
- TWindow.Init(AParent, ATitle);
- with Attr do
- begin
- X := 10; Y := 10; W := 500; H := 300;
- Menu := LoadMenu(HInstance, PChar(id_Menu))
- end
- end;
-
- {- Destroy PBitmapWindow }
- destructor PBitmapWindow.Done;
- begin
- if Bitmap <> 0 then DeleteObject(Bitmap);
- TWindow.Done
- end;
-
- {- Load and display bitmap }
- procedure PBitmapWindow.SetupWindow;
- begin
- TWindow.SetupWindow;
- Bitmap := LoadBitmap(fileName, HWindow, Width, Height);
- if Bitmap = 0 then
- begin
- MessageBox(HWindow, 'File not found', 'Error',
- mb_IconExclamation or mb_ok);
- Halt
- end
- end;
-
- {- Paint bitmap inside window }
- procedure PBitmapWindow.Paint(PaintDC: HDC;
- var PaintInfo: TPaintStruct);
- var
- MemDC: HDC;
- OldBitmap: HBitmap;
- begin
- TWindow.Paint(PaintDC, PaintInfo);
- if Bitmap <> 0 then
- begin
- MemDC := CreateCompatibleDC(PaintDC);
- OldBitmap := SelectObject(MemDC, Bitmap);
- BitBlt(PaintDC, 0, 0, Width, Height, MemDC, 0, 0, SRCCopy);
- SelectObject(MemDC, OldBitmap);
- DeleteDC(MemDC)
- end
- end;
-
- {- Execute Menu:Print command }
- procedure PBitmapWindow.CMPrint(var Msg: TMessage);
- var
- N: Integer;
- DC, MemDC: HDC;
- OldBitmap: HBitmap;
- begin
- if (Bitmap <> 0) and PrnStart('PBitmap') then
- begin
- N := GetDeviceCaps(PDc, RasterCaps);
- if (N and rc_BitBlt) <> rc_BitBlt then
- MessageBox(HWindow, 'Device does not support bitmaps',
- 'Error', mb_IconExclamation or mb_Ok)
- else begin
- DC := GetDC(HWindow);
- MemDC := CreateCompatibleDC(DC);
- ReleaseDC(HWindow, DC);
- OldBitmap := SelectObject(MemDC, Bitmap);
- BitBlt(PDc, 0, 0, Width, Height, MemDC, 0, 0, SRCCopy);
- NewPage;
- SelectObject(MemDC, OldBitmap);
- DeleteDC(MemDC)
- end;
- PrnStop
- end
- end;
-
- {- Execute Menu:Exit command }
- procedure PBitmapWindow.CMQuit(var Msg: TMessage);
- begin
- CloseWindow
- end;
-
- var
-
- PBitmapApp: PBitmapApplication;
-
- begin
- PBitmapApp.Init('PBitmapApp');
- PBitmapApp.Run;
- PBitmapApp.Done
- end.
-
-
- {--------------------------------------------------------------
- Copyright (c) 1991 by Tom Swan. All rights reserved.
- Revision 1.00 Date: 5/17/1991
- ---------------------------------------------------------------}
-